<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="../../src/object/clone.js"></script>
</head>
<body>
  <script>
    const obj = {
      a: 1,
      b: ['b', 'i', 'n'],
      c: { h: 20 },
      // JSON 不能克隆方法
      fn: function(){}
    }

    // 4. 循环效率问题优化
    obj.b.push(obj.c);
    obj.c.j = obj.b;
    const result = deepClone4(obj)
    console.log(obj);
    console.log(result);

    // // 3. 解决循环引用问题
    // obj.b.push(obj.c);
    // obj.c.j = obj.b;
    // const result = deepClone3(obj)
    // console.log(obj);
    // console.log(result);


    // 2. 递归引用
    // 不能解决循环引用的问题
    // // obj.b.push(obj.c);
    // // obj.c.j = obj.b;
    // const result = deepClone2(obj);
    // // // 测试：修改新数据的属性值
    // // result.c.h = 30
    // console.log(obj);
    // console.log(result);

    // 1. JSON
    // // 不能解决循环引用的问题
    // obj.b.push(obj.c);
    // obj.c.j = obj.b;
    // const result = deepClone1(obj)
    // // 测试：修改新数据的属性值
    // result.c.h = 30
    // console.log(obj);
    // console.log(result);
  </script>
</body>
</html>